package cn.edu.hnit.javaee.experiments.experiment02.aop;

import org.aspectj.lang.ProceedingJoinPoint;

import cn.edu.hnit.javaee.experiments.experiment02.model.Player;
// 将ChatAspect注册为切面并注入IOC容器中
public class ChatAspect {
	
	// 环绕通知，对sendPlayerMsg方法进行增强
    public Object aroundSendPlayerMsg(ProceedingJoinPoint joinPoint) throws Throwable {  
        // 获取方法参数（这里假设第一个参数是Player对象）  
        Object[] args = joinPoint.getArgs();  
        Player player = (Player) args[0];  
  
        // 判断玩家是否处于禁言状态  
        if (player.isMuted()) {  
            // 如果处于禁言状态，则记录日志并直接返回  
            System.out.println(String.format("[世界频道] 系统检测到玩家[%s]在游戏中存在违规发言，"
            		+ "被暂时禁言，望各位玩家遵守游戏规则，文明上网", player.getNickname()));
            return null;  
        }  
  
        // 如果不是禁言状态，则继续执行原方法  
        return joinPoint.proceed(args);  
    }  
}
